libxenctrl: adds xc_domain_unbind_msi_irq to libxc.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 5 Feb 2009 15:28:09 +0000 (15:28 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 5 Feb 2009 15:28:09 +0000 (15:28 +0000)
The function is needed to unbind MSI/MSI-X on transition from D3hot
state to D0 state.

Signed-off-by: Yuji Shimada <shimada-yxb@necst.nec.co.jp>
tools/libxc/xc_domain.c
tools/libxc/xenctrl.h

index 5bfb34f95a2c444cdb2bf0474e6d3c1ccad6f99c..5e977307cff6b3cb26d7a2317f8f507a5c9e0d5f 100644 (file)
@@ -941,6 +941,32 @@ int xc_domain_update_msi_irq(
     return rc;
 }
 
+int xc_domain_unbind_msi_irq(
+    int xc_handle,
+    uint32_t domid,
+    uint32_t gvec,
+    uint32_t pirq,
+    uint32_t gflags)
+{
+    int rc;
+    xen_domctl_bind_pt_irq_t *bind;
+
+    DECLARE_DOMCTL;
+
+    domctl.cmd = XEN_DOMCTL_unbind_pt_irq;
+    domctl.domain = (domid_t)domid;
+
+    bind = &(domctl.u.bind_pt_irq);
+    bind->hvm_domid = domid;
+    bind->irq_type = PT_IRQ_TYPE_MSI;
+    bind->machine_irq = pirq;
+    bind->u.msi.gvec = gvec;
+    bind->u.msi.gflags = gflags;
+
+    rc = do_domctl(xc_handle, &domctl);
+    return rc;
+}
+
 /* Pass-through: binds machine irq to guests irq */
 int xc_domain_bind_pt_irq(
     int xc_handle,
index e3b4987462d5e612ea2b467ebffb62b2f9a2deb1..dedaa0dd699845f45b328d233fcd945798656821 100644 (file)
@@ -1094,6 +1094,12 @@ int xc_domain_update_msi_irq(
     uint32_t pirq,
     uint32_t gflags);
 
+int xc_domain_unbind_msi_irq(int xc_handle,
+                             uint32_t domid,
+                             uint32_t gvec,
+                             uint32_t pirq,
+                             uint32_t gflags);
+
 int xc_domain_bind_pt_irq(int xc_handle,
                           uint32_t domid,
                           uint8_t machine_irq,